在昨天標籤編碼法(Label Encoding)的舉例中,我們可以透過 sklearn 中的函數 LabelEncoder 將類別型態轉為數值型態,那大家是否逆向思考過「如何將數值型態轉換為類別型態呢?」,為了更熟悉操作,我決定將內容寫下來作為一個整理和複習!話不多說,一起看下去吧!
舉例:將18~40歲設為青年,41~65歲設為壯年,65歲以上設為老年
使用自定義函式 def
設定條件後,以 apply()
函式轉換。
import pandas as pd
data = {'name':['Alan','Chris','Dora','Elas','Ida'],
'gender':['M','M','F','F','M'],
'age':[68,23,32,50,42]}
df = pd.DataFrame(data)
# 自定義函式:設定年齡段區間
def group(age):
if 18 <= age <= 40:
return '青年'
elif 40 < age <= 65:
return '壯年'
else:
return '老年'
# 新增 age_group 欄位呈現
df['age_group'] = df['age'].apply(group)
print(df)
輸出結果:
Lambda 函式又被稱為「匿名函式」,不需要透過 def 替函式命名,適用於一次性的操作,未來無法再次呼叫,其寫法簡易 lambda arguments:expression
是只有一行運算式的 Python 函式。
arguments
參數,可以有零個或多個expression
包含單一運算式的表達式import pandas as pd
data = {'name':['Alan','Chris','Dora','Elas','Ida'],
'gender':['M','M','F','F','M'],
'age':[68,23,32,50,42]}
df = pd.DataFrame(data)
# 使用Lambda函式,透過apply()將年紀轉換成年齡段區間
df['age_group'] = df['age'].apply(lambda age:'青年' if 18 <= age <= 40 else
('壯年' if 40 < age <= 65 else '老年'))
print(df)
輸出結果:
想要自行定義轉換規則,可以使用 def 或 Lambda,前者雖然會寫比較多行,但對於團隊協同開發時,不僅可以重複取用,還易於閱讀,而後者的優點則是簡潔快速,大家可以視需求決定操作!如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱唷!
我是 Eva,一位正在努力跨進資料科學領域的女子!我們下一篇文章見!Bye Bye~
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】